/**
 * 小A和小B是一对好朋友，他们的爱好是研究数字。
 * 学过除法之后，他们就发明了一个新游戏：两人各说一个数字分别为a和b，
 * 如果a能包含b的所有质数因子，那么A就获胜。但是当数字太大的时候，
 * 两个朋友的脑算速度就有点跟不上了。
 * 现在，请你写个程序，来判断胜负吧：输入两个正整数，
 * 表示a和b（2≤a, b≤10 18）。如果a包含了b的所有质数因子，则输出“Yes”，
 * 否则输出“No”（输出时没有引号）。
 * eg1: 9999999937 9999999929 No
 * eg2: 999999999999999999 333333333333333333 Yes
 */

#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

int main(void)
{
    int table[] = {
        2, 3, 5, 7, 11, 13, 17, 19, 23, 29,
        31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
        73, 79, 83, 89, 97,
        101, 103, 107, 109, 113,
        127, 131, 137, 139, 149, 151, 157, 163, 167, 173,
        179, 181, 191, 193, 197, 199, 211,
        223, 227, 229,
        233, 239, 241, 251, 257, 263, 269, 271, 277, 281,
        283, 293, 307, 311, 313, 317, 331, 337, 347, 349,
        353, 359, 367, 373, 379, 383, 389, 397, 401, 409,
        419, 421, 431, 433, 439, 443, 449, 457, 461, 463,
        467, 479, 487, 491, 499
    };
    int qty = sizeof (table) / sizeof (int);

    long long a, b;
    cin >> a >> b;

    int flag = 0;
    for (int i = 0; i < qty; ++i) {
        if (b % table[i]) {
            continue;
        }
        if (a % table[i]) {
            cout << "No";
            return 0;
        }
        b /= table[i];
        ++ flag;
    }
    if (flag == 0) {
        cout << "No";
    } else {
        cout << "Yes";
    }

    return 0;
}
